package com.shangcg.Alearn.mode.bridge;


/**
 * 桥接模式
 * 意图：将抽象部分和实现部分分离，使他们可以独立的变化  此demo将：shape:图形 抽象部分 为抽象类  circle为实现部分，实现类，继承自shape
 * 主要解决：在有多种可能变化的情况下，用继承会造成类爆炸问题，扩展起来不灵活？？ 没理解透，桥接模式不也用了继承吗，他就不会爆炸吗？
 *         对于本demo,多变可能变化为：图形形状、颜色 所以把形状和颜色独立开来，各自变化
 *         比如形状有3种，颜色有3种，如果常规思路穷举需要3*3九种实现，改变任何一个角度，两个都需要改变，如果采用桥接，则只需定义图形和颜色，哪个变化维护哪个
 * 何时使用：实现系统可能有多个角度分类，每一种角度都可能变化 如：形状 和 颜色
 * 如何解决：把这种多角度分类分离出来，让他们独立变化
 *         如：桥接顶层接口是画的接口，实现为变化角度之一颜色实现类， 另一个角度形状用抽象类shape定义，shape持有桥接顶层接口画的动作，shape的子类实现具体的形状即可
 * 使用：使用的时候从抽象类具体实现实例化，抽象类是变化角度之一，实现是具体方案，且抽象类持有桥接顶层接口，可以使用其他变化角度
 *
 */
public interface DrawAPI {
     void drawCircle(int radius, int x, int y);
}
